package main

import "fmt"

// 顺序扫描数组，对每一个元素，在 map 中找能组合给定值的另一半数字，如果找到了，直接返回 2 个数字的下标即可。
// 如果找不到，就把这个数字存入 map 中，等待扫到“另一半”数字的时候，再取出来返回结果
func twoSum(nums []int, target int) []int {
	m := make(map[int]int)
	for i := 0; i < len(nums); i++ {
		x := nums[i]           //首先获取下标的值
		y := target - x        //获取差值
		if j, ok := m[y]; ok { //通过将差值与map的key匹配,成功返回下标
			fmt.Println(j, ok)
			return []int{i, j}
		}
		m[x] = i //将值和下表放入map
	}
	return []int{-1, -1}
}
